package com.wjt.homestayms.controller;

import com.wjt.homestayms.common.PageRequest;
import com.wjt.homestayms.common.PageResult;
import com.wjt.homestayms.common.Result;
import com.wjt.homestayms.pojo.Store;
import com.wjt.homestayms.service.IStoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class StoreController {

    //注入的应该是接口，而不是实现类。
    @Autowired
    IStoreService storeService;


    @GetMapping("/getStoreList")
    @ResponseBody
    public Map<String, Object> getStoreListById(PageRequest pageRequest, Integer id,String sName) {
        Map<String, Object> map = new HashMap<>();
        PageResult resultPage = null;
        if (id != null) {
             resultPage = storeService.getResultPage(pageRequest, id);
        }else if(sName != null){
             resultPage = storeService.getResultPage(pageRequest, sName);
        }
        return Result.queryResult(map,resultPage);
    }

    @GetMapping("/getAllStore")
    @ResponseBody
    public Result<List<Store>> getAllStore() {
        return storeService.getAll();
    }

    @GetMapping("/getStoreBySid")
    @ResponseBody
    public Map<String, Object> getStoreBySid(Integer sId) {
        Map<String, Object> map = new HashMap<>();
        Store store = storeService.getStore(sId);
        if (store != null) {
            map.put("code", 200);
            map.put("status", true);
            map.put("result", store);
        } else {
            map.put("code", 500);
            map.put("status", false);
            map.put("result", null);
        }
        return map;
    }

    @PostMapping("/addStore")
    @ResponseBody
    public Map<String, Object> addStore(Store store) {
        Map<String, Object> map = new HashMap<>();
        if (store != null) {
            //判断是否添加数据成功。
            boolean flag = storeService.addStore(store);
            if (flag) {
                map.put("code", 200);
                map.put("status", true);
            } else {
                map.put("code", 500);
                map.put("status", false);
            }
            return map;
        }
        map.put("code", 500);
        map.put("status", false);
        return map;
    }

    @PostMapping("/updateStore")
    @ResponseBody
    public Map<String, Object> updateStore(Store store) {
        Map<String, Object> map = new HashMap<>();
        //检验从前端获取的参数是否合法。
        if (store != null) {
            //判断是否修改数据成功。
            boolean flag = storeService.updateStoreInfo(store);
            if (flag) {
                map.put("code", 200);
                map.put("status", true);
            } else {
                map.put("code", 500);
                map.put("status", false);
            }
            return map;
        }
        return map;
    }

    @GetMapping("/deleteStore")
    @ResponseBody
    public Map<String, Object> deleteStore(Integer sId) {
        Map<String, Object> map = new HashMap<>();
        //检验从前端获取的参数是否合法。
        if (sId != null || sId > 0) {
            //判断是否修改数据成功。
            boolean flag = storeService.deleteStoreBySid(sId);
            if (flag) {
                map.put("code", 200);
                map.put("status", true);
            } else {
                map.put("code", 500);
                map.put("status", false);
            }
            return map;
        }
        map.put("code", 500);
        map.put("status", false);
        return map;
    }

//    @GetMapping("/queryStoreListBySid")
//    @ResponseBody
//    public Map<String, Object> queryStoreListBySid(PageRequest pageRequest, Integer sId) {
//        Map<String, Object> map = new HashMap<>();
//        if (sId != null || sId > 0) {
//            PageResult resultPage = storeService.getResultPageBySid(pageRequest, sId);
//            map.put("code", 200);
//            if (resultPage != null) {
//                map.put("status", true);
//                map.put("result", resultPage);
//            } else {
//                map.put("status", false);
//                map.put("result", null);
//            }
//            return map;
//        }
//        map.put("code", 500);
//        map.put("status", false);
//        map.put("result", null);
//        return map;
//    }

//    @GetMapping("/queryStoreListBySname")
//    @ResponseBody
//    public Map<String, Object> queryStoreListBySname(PageRequest pageRequest, String sName) {
//        Map<String, Object> map = new HashMap<>();
//        if (sName != null) {
//            PageResult resultPage = storeService.getResultPage(pageRequest, sName);
//            map.put("code", 200);
//            if (resultPage != null) {
//                map.put("status", true);
//                map.put("result", resultPage);
//            } else {
//                map.put("status", false);
//                map.put("result", null);
//            }
//            return map;
//        }
//        map.put("code", 500);
//        map.put("status", false);
//        map.put("result", null);
//        return map;
//    }

    /**
     * 获取所有门店信息
     * @param id
     * @return
     */
    @GetMapping("getStores")
    @ResponseBody
    public Map<String,Object> getStores(Integer id){
        Map<String,Object> map = new HashMap<>();
        if(id > 0){
            List<Store> stores = storeService.getStores(id);
            map.put("code",200);
            map.put("status", true);
            map.put("result", stores);
            return map;
        }
        map.put("code",500);
        map.put("status",false);
        map.put("result",null);
        return map;
    }

}
